A popular method of scoring matching data records is to count shared grams between a query and a record. As used herein, gram refers to a fixed size contiguous block of characters (also referred to as polygraphs). A set of search grams can be determined based on a query. The set of grams may be imbedded in a vector space and compared with stored data in an efficient manner. Metrics may be used to score comparisons between the set of grams and the items in stored data.
Data may be stored in separate, but related, tables allowing for efficient use of resources, so that linked data need not be copied. A join combines records from two or more tables and creates a combined data set that may be used as a table. A join is a way to combine fields from two tables by using common values. Joins allow data for a given record to be retrieved—including data stored in separate, but related, tables.
A join in the context of exact matching may be performed by searching for a first aspect of the request in a first table and then searching for a second aspect of a request in a second table, and so on. For example, using separate name and address tables related to each other, searching for “John Smith” at “123 1st St.” may be performed by finding a set of “John Smith” entries in the name table, following the relationships to the address table, and then looking for “123 1st St.” This search may be easy and relatively efficient, because a matching name entry is clearly defined in an exact matching context.